home *** CD-ROM | disk | FTP | other *** search
/ The Best of MacTutor - S…e Code for Volumes 1 to 5 / The Best of MacTutor - Source Code for Volume 1-5 (Wayzata Technology)(6031)(1990).bin / Source Code / #24 (Sep 87) / Monkey cdev source / MonkeyCdev.c < prev    next >
C/C++ Source or Header  |  1987-06-06  |  2KB  |  83 lines

  1. /* Monkey CDEV
  2.  * by Jan Eugenides
  3.  * 6/6/87
  4.  *
  5.  * An example of adding a function to the
  6.  * Control Panel, and using the Macintosh II's
  7.  * SndPlay routine
  8.  */
  9.  
  10. #include <MacTypes.h>
  11. #include <pascal.h>
  12. #include <MemoryMgr.h>
  13. #include <OSUtil.h>
  14. #include <ToolboxUtil.h>
  15. #include <DialogMgr.h>
  16. #include <EventMgr.h>
  17. #include <SoundMgr.h>
  18.  
  19. /*First define some needed constants*/
  20. enum{
  21.  initDev,
  22.  hitDev,
  23.  closeDev,
  24.  nulDev,
  25.  updateDev,
  26.  deActivDev,
  27.  keyEvtDev,
  28.  macDev
  29.  };
  30.  
  31.  Handle InitStorage();
  32.  
  33.  /*This is the main routine, the entry point for the CDEV*/
  34.  pascal Handle main(message,item,numItems,CPanelID,ep,cdevStorage,CPDialog)
  35.  int                message,item,numItems,CPanelID;
  36.  EventRecord    *ep;
  37.  Handle            cdevStorage;
  38.  DialogPtr        CPDialog;
  39.  {
  40.  if(message == macDev)return((Handle)1);
  41.  if(cdevStorage)
  42.      {
  43.      switch(message)
  44.          {
  45.          case initDev: /*Init message received, allocate some storage*/
  46.              cdevStorage = InitStorage();
  47.              if(cdevStorage)DoHit(1+numItems,numItems,CPDialog);
  48.              break;
  49.          case closeDev: /*Close message received, dispose of storage*/
  50.              DisposeStorage(cdevStorage);
  51.              cdevStorage = (Handle)0L;
  52.              break;
  53.          case hitDev: /*User clicked an item, handle it*/
  54.              DoHit(item,numItems,CPDialog);
  55.              break;
  56.          } /*end switch*/
  57.      }/*end else if*/ 
  58. return(cdevStorage);
  59.  }
  60.  
  61.  Handle InitStorage()    /*ultra-simple storage allocation*/
  62.  {                                /*The storage is not used in this example*/
  63.  return(NewHandle(16L));
  64.  }
  65.  
  66.  DisposeStorage(h) /*Release our storage area*/
  67.  Handle h;
  68.  {
  69.  DisposHandle(h);
  70.  }
  71.  
  72.  DoHit(item,numItems,CPDialog)    /*Handle a click on one of our items*/
  73.  int            item,numItems;            /*This example has only one item, so it's*/
  74.  DialogPtr    CPDialog;                /*very simple*/
  75.  {
  76.  Handle    soundH;
  77.  
  78. soundH = GetResource('snd ',4);    /*there is a space after snd */
  79. if(soundH)
  80.     SndPlay(0L,soundH,TRUE);         /*play the monkey screech*/
  81.  
  82. }
  83.